package com.example.springbootdemo.utils;

import org.apache.commons.lang3.StringUtils;

;

/**
 * @ClassName: MyStringUtil
 * @Description: 我的字符串工具类
 * @author: moke
 * @date: 2020/4/14 10:01
 */
public class MyStringUtil {
    public static String resultFormat(String str){
        if(StringUtils.isNotEmpty(str)){
            int level = 0;
            //存放格式化的json字符串
            StringBuffer jsonForMatStr = new StringBuffer();
            for(int index=0;index<str.length();index++)//将字符串中的字符逐个按行输出
            {
                //获取s中的每个字符
                char c = str.charAt(index);
                //level大于0并且jsonForMatStr中的最后一个字符为\n,jsonForMatStr加入\t
                if (level > 0 && '\n' == jsonForMatStr.charAt(jsonForMatStr.length() - 1)) {
                    jsonForMatStr.append(getLevelStr(level));
                }
                //遇到"{"和"["要增加空格和换行，遇到"}"和"]"要减少空格，以对应，遇到","要换行
                switch (c) {
                    case '{':
                    case '[':
                        jsonForMatStr.append(c + "\n");
                        level++;
                        break;
                    case ',':
                        jsonForMatStr.append(c + "\n");
                        break;
                    case '}':
                    case ']':
                        jsonForMatStr.append("\n");
                        level--;
                        jsonForMatStr.append(getLevelStr(level));
                        jsonForMatStr.append(c);
                        break;
                    default:
                        jsonForMatStr.append(c);
                        break;
                }
            }
            str = jsonForMatStr.toString();
        }
        return str;
    }

    private static String getLevelStr(int level) {
        StringBuffer levelStr = new StringBuffer();
        for (int levelI = 0; levelI < level; levelI++) {
            levelStr.append("\t");
        }
        return levelStr.toString();
    }

    /**
     * 截取字符串
     * @param str
     * @param strStart
     * @param strEnd
     * @return
     */
    public static String substring(String str,String strStart,String strEnd){
        /* 找出指定的2个字符在 该字符串里面的 位置 */
        int strStartIndex = str.indexOf(strStart);
        int strEndIndex = str.indexOf(strEnd);

        
        /* index 为负数 即表示该字符串中 没有该字符 */
        if (strStartIndex < 0) {
            return "";
        }
        if (strEndIndex < 0) {
            return "";
        }
        /* 开始截取 */
        return str.substring(strStartIndex, strEndIndex).substring(strStart.length());
    }


}